package com.wanfeng.oa.utils;

import com.wanfeng.model.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

//让权限变成树形结构 id和parent_id构成层级关系
public class MenuHelper {

    //封装成树形结构  所有数据
    public static List<SysMenu> buildTrees(List<SysMenu> sysMenuList) {
        ArrayList<SysMenu> trees = new ArrayList<>();
        for (SysMenu sysMenu : sysMenuList) {
            if(sysMenu.getParentId().longValue()==0){
                SysMenu item =findChildren(sysMenu,sysMenuList);
                trees.add(item);
            }
        }
        return trees;
    }

    //
    /**
     * 递归查找子节点
     * @return
     */
    private static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
        //先设置
        sysMenu.setChildren(new ArrayList<SysMenu>());
        for (SysMenu menu : sysMenuList) {
            //上下级关系
            //递归条件出口
            if(menu.getParentId().longValue()==sysMenu.getId().longValue()){// 注释掉  冗余代码
//                if (sysMenu.getChildren() == null) {
//                    sysMenu.setChildren(new ArrayList<>());
//                }
                sysMenu.getChildren().add(findChildren(menu,sysMenuList));
            }
        }
        return sysMenu;

    }


}
